﻿using System.Text.RegularExpressions;

namespace RuoVea.ExHtml
{
    /// <summary>
    /// 扩展 html
    /// </summary>
    public static class HtmlH
    {
        #region 过滤空格，过滤换行
        public static string ReplaceEmpty(this string html)
        {
            if (string.IsNullOrWhiteSpace(html))
                return null;
            html = Regex.Replace(html, "^\\s*", string.Empty, RegexOptions.Compiled | RegexOptions.Multiline);//过滤空格
            html = Regex.Replace(html, "\\r\\n", string.Empty, RegexOptions.Compiled | RegexOptions.Multiline);//过滤换行
            html = Regex.Replace(html, "\\t", string.Empty, RegexOptions.Compiled | RegexOptions.Multiline);//过滤换行
            return html;
        }
        #endregion

        /// <summary>
        /// 过滤html中的标签
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string Remove_a(this string str)
        {
            str = Regex.Replace(str, @"<a\s*[^>]*>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"</a>", "", RegexOptions.IgnoreCase);
            return str;
        }

        /// <summary>
        /// 过滤html中的 strong 标签
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string Remove_strong(this string str)
        {
            str = Regex.Replace(str, @"<strong\s*[^>]*>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"</strong>", "", RegexOptions.IgnoreCase);
            return str;
        }

        /// <summary>
        /// 过滤html中的 span 标签
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string Remove_span(this string str)
        {
            str = Regex.Replace(str, @"<span\s*[^>]*>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"</span>", "", RegexOptions.IgnoreCase);
            return str;
        }

        #region 去除HTML标记
        /// <summary>
        /// 去除HTML标记
        /// </summary>
        /// <param name="NoHTML">包括HTML的源码 </param>
        /// <returns>已经去除后的文字</returns>
        public static string NoHtml(this string Htmlstring)
        {
            //删除脚本
            Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
            //删除HTML
            Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&hellip;", "", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&mdash;", "", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&ldquo;", "", RegexOptions.IgnoreCase);
            Htmlstring.Replace("<", "");
            Htmlstring = Regex.Replace(Htmlstring, @"&rdquo;", "", RegexOptions.IgnoreCase);
            Htmlstring.Replace(">", "");
            Htmlstring.Replace("\r\n", "");
            // Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
            return Htmlstring;

        }
        #endregion
    }
}
